import Vue from 'vue'
import Vuex from 'vuex'
// import persiste from 'vuex-persistedstate' // vuex持久化
Vue.use(Vuex)

export default new Vuex.Store({
  // plugins: [persiste()], // vuex持久化
  state: {
    isLogin: false, // 是否登录

    createdMusicList: [], //创建的歌单

    collectedMusicList: [], // 收藏的歌单

    createListType: '', // 创建的歌单是否显示

    musicId: '', // 音乐Url

    musicListId: '', // 当前播放歌单的id

    currentIndex: -1, // 当前播放音乐的索引

    musicList: [], // 当前播放的歌单

    isPlay: false, // 音乐的播放状态

    isMusicLoad: false, // 音乐是否在加载中

    likeMusicList: [], // 喜欢id列表

    currentTime: 0, // 实时播放时长

    subSingerList: null, // 已收藏的歌手

    likeVideoList: null, // 已喜欢的视频

    subVideoList: null, // 已收藏的video

    subAlbumList: null, // 已收藏的专辑
    downloadMusicInfo: {
      // 要下载的音乐信息
      name: '',
      url: ''
    },

    // 控制音乐详细信息卡牌打的显示和隐藏

    musicisShow: null,

    mvlist: {}, // 一个歌手的mv列表,
    CardMv: '' // 保存歌曲详情的背景mv
    // discoverPageId: 0 //discover三路路由切换的状态，刷新不丢失
  },
  getters: {},
  mutations: {
    // 保存歌曲详情mv
    updateMusicCardMv(state, CardMv) {
      state.CardMv = CardMv
    },
    // 更新卡牌隐藏状态
    updateMusicIsshow(state, type) {
      state.musicisShow = type
    },
    // 更新登录状态
    updataLoginState(state, flag = false) {
      state.isLogin = flag
    },
    // 更新创建的歌单
    updataCreatedMusicList(state, data) {
      state.createdMusicList = data
    },
    // 更新收藏的歌单
    updataCollectedMusicList(state, data) {
      state.collectedMusicList = data
    },
    // 更新创建列表状态
    updataCreateListType(state, flag) {
      state.createListType = flag
    },
    //更新音乐Url
    updateMusicId(state, musicId) {
      state.musicId = musicId
    },
    // 更新歌单列表和歌单id
    updateMusicList(state, payload) {
      // 当前歌单id发生变化时，重置当前播放音乐索引
      if (payload.musicListId != state.musicListId) {
        state.musicListId = payload.musicListId
        state.currentIndex = -1
      }
      // 对歌单进行深拷贝再赋值 直接赋值是浅拷贝
      // 歌单是固定的死数据，而vuex中的musicList是动态的
      let musicList = payload.musicList.slice(0)
      state.musicList = musicList
    },
    // 修改播放状态
    changePlayState(state, isPlay) {
      state.isPlay = isPlay
      // console.log('changePlayState');
    },
    // 更新音乐的加载状态
    updateMusicLoadState(state, isLoad) {
      state.isMusicLoad = isLoad
    },
    // 更新当前播放的音乐序号
    updateCurrentIndex(state, index) {
      state.currentIndex = index
    },
    // 更新喜欢列表
    updateLikeMusicList(state, likeMusicList) {
      state.likeMusicList = likeMusicList
    },
    // 更新音乐进度
    updateCurrentTime(state, currentTime) {
      state.currentTime = currentTime
    },
    // 更新当前下载的音乐信息
    updateDownloadMusicInfo(state, info) {
      state.downloadMusicInfo = info
    },
    // 更新已收藏的歌手列表
    updateSubSingerList(state, subSingerList) {
      state.subSingerList = subSingerList
    },
    // 更新已喜欢的视频列表
    updateLikeVideoList(state, likeVideoList) {
      state.likeVideoList = likeVideoList
    },
    // 更新已收藏的视频列表
    updateSubVideoList(state, subVideoList) {
      state.subVideoList = subVideoList
    },
    // 更新已收藏的专辑列表
    updateSubAlbumList(state, subAlbumList) {
      state.subAlbumList = subAlbumList
    },
    // 更新歌手mv列表
    updateSingerMvList(state, mvlist) {
      state.mvlist = mvlist
    }
    // 更新discover子页面状态
    // updataDiscoverPageId(state, id) {
    //   state.discoverPageId = id
    // }
  },
  actions: {},
  modules: {}
})
